[急]求教关于TCP协议~~~~

来源:百度知道 编辑:UC知道 时间:2024/05/19 12:26:46
昨天我和别人就TCP协议发生了争执,我的观点是:TCP协议中的核心概念就是“面向连接”的概念,而并没有“服务器”与“客户端”的概念。就像两台完全一样的主机要进行TCP通信,一方发起连接,另一方接受连接,然后两者就可以进行数据交换,两者的地位应该是对等的。而“服务器”与“客户端”的概念是后人在具体编程时候固化的一个概念,即通常情况下会有一对多服务的情况,我们把请求服务的一方称为客户端,把提供服务的一方称为服务器。——这是我的观点。

而别人反驳我说,服务器和客户端的概念是TCP协议中也有的,发起连接的一方就是客户端,接受连接的一方就使服务器。说我理解错了。

有哪位达人详细研究过TCP协议吗?我的理解到底是对的还是错的?

我觉得你们两人的观点都有道理,但并不矛盾,你是从协议栈的概念来理解的,而另一方是从应用的角度来理解的,而仅就TCP协议本身而言,你的理解更加贴切
只从协议栈的角度,TCP就是通过序号、窗口、重传等机制保证数据在两个应用进程之间的可靠传输,而与网络/链路/物理层的可靠性无关,这种保证机制是双向对等的,因此仅就数据传输而言,没有明显的客户端和服务器的概念
而从应用出发,TCP协议是伴随着C/S应用模式的概念被大范围普及的,在C/S模式中,能同时向多个访问者被动提供某类应用服务的一方称为服务器,而主动申请服务的一方则称为客户端。由于这种模式在网络应用中比较广泛,操作系统提供的socket API更多地为这种模式提供快速实现方法,因此在封装TCP协议为API时有意地使服务程序和客户程序按照不同的编程方式,服务方为socket-->bind-->listen-->accept-->send/recv,而客户方为socket-->connect-->send/recv,由此让人感觉TCP只能组建C/S应用,不能组建P2P应用,而UDP的API则更加贴近P2P应用;这是OS API所造成的错觉,不幸地被多数编程人员所盲从,再被宣扬后蒙上了一层面纱而已

我觉的你说的有道理!

TCP不就是个传输协议吗? IPV4 或者IPV6什么 的

就是你说的那样 先在都用IPV4

TCP协议主为了在主机间实现高可靠性的包交换传输协议,TCP协议主要在网络不可靠的时候完成通信
TCP是面向连接的端到端的可靠协议。它支持多种网络应用程序。TCP对下层服务没有多少要求,它假定下层只能提供不可靠的数据报服务,它可以在多种硬件构成的网络上运行。它的下层是IP协议,TCP可以根据IP协议提供的服务传送大小不定的数据,IP协议负责对数据进行分段,重组,在多种网络中传送。